package com.bdqn;

import java.io.InputStream;
import java.util.Properties;

/**
 * 通过单例模式读取配置文件
 */
public class ConfigManager {
    private static ConfigManager configManager = new ConfigManager();
    private static Properties properties;
    // 定义一个ConfigManager的静态私有对象configManager，现在该对象只能自本类内部访问
//    private static ConfigManager configManager = null;

    // 杜绝了外界创建该类对象，私有构造方法
    private ConfigManager() {
        String congfigPath = "database.properties";
        properties = new Properties();
        // 得到当前类的类加载器并将配置文件加载到输入流中
        InputStream is = ConfigManager.class.getClassLoader().getResourceAsStream(congfigPath);
        try {
            // 将输入流中的数据加载到properties中
            properties.load(is);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 饿汉模式
     */
    public static ConfigManager getInstance() {
        return configManager;
    }

    /**
     * 对外提供的获取ConfigManager实例的方法
     * 实现了每次被调用都返回同一个实例的功能，
     * 当 configManager 为null时表示实例尚未被创建，那么就创建该实例
     * 若 configManager 不为null，就直接返回这个实例，从而避免每次都操作数据库都要创建新的 ConfigManager 对象
     */
//    public static synchronized ConfigManager getInstance() {
//        // 如果 configManager 为null，则创建一个实例，存在册直接返回
//        if (configManager == null) {
//            configManager = new ConfigManager();
//        }
//        return configManager;
//    }

    // getValue() 方法可以根据传入的key获取database.properties文件中对应的value值
    public String getValue(String key) {
        return properties.getProperty(key);
    }

}
